rclone在openwrt挂载onedrive的E5开发者API实现网盘SMB本地化及续期

一:前方

之前淘宝购买的office 365账号,能激活桌面版office 2019增强版,但是购买的账号,过了评价期后,就不能登录了,提示账号密码错误,我Fuck卖家的无德呀!另外,细想,用别人账号始终都不是安全的策略,现在微软推出开发者E5账号,免费使用90天的订阅,如果期间有使用到开发者API做读写,那会视为有开发行为,为自动给续期,就利用这点,我要成为开发者(其实是冲着能使用正版office365桌面版)去。

二:注册E5开发者

这里网上有太多的教程了,就不再 赘述了

三:微软

先在软件上注册应用,并获取到

应用ID:clientID:

应用secret:secretID值

token:这个在操作电脑上弄,下面讲到

#### 设置 API 权限

  • 点击API 权限,按照图示进行操作,添加Files.ReadFiles.ReadWriteFiles.Read.AllFiles.ReadWrite.Alloffline_accessUser.Read这些权限。
image-20211008144738846

四:OpenWrt 上操作

先在OP上启用Rclone服务

image-20211008145554035

之前写* openwet使用Rclone同步阿里云网盘并开机自动挂载有介绍过

五:操作——电脑上windows10——PuTTY——OpenWrt

先打开PuTTY,登录上OpenWrt路由器

rclone config配置

  1. 输入n 新建rclone同步盘
  2. 输入名称,我输入onedriveE5
  3. 选择类型,我选择23,23 / Microsoft OneDrive
    \ “onedrive”(这里要自己留意,rclone版本不一样,编号会不一样)
  4. OAuth Client Id=》填上对应的ClientID
  5. OAuth Client Secret=>填上对应的Clinet Secert
  6. Edit advanced config? (y/n)=》n
  7. 重点说说这步,默认是Yes的,但是我们Openwrt没有GUI和流量器,无法完成打开浏览授权,所以这里要选择n

Remote config
Make sure your Redirect URL is set to “http://localhost:53682/” in your custom config.
Use auto config?

  • Say Y if not sure
  • Say N if you are working on a remote or headless machine
    y) Yes (default)
    n) No

8.result> 封上下面步骤的token码:{所有内容}

9.Your choice> 1

image-20211008144621682

最后提示确认,完成后显示所有配置信息

六:操作——电脑上windows10——Rclone

下载win版本的Rclone,这一步是为了使用clientID和client secertID连接服务,生成五:8.所需要的token码

1.在下载解决的目录地址栏目输入CMD,就能打开所在路径的SHELL文件了

img

2.输入

rclone authorize "onedrive" "clientID" "secertID"

3.这一步是为了在没有GUI流量器的OpenWrt情况下获取到token值

七:挂载

前文已经写过如何挂载了,这里就不再重复,看看效果

image-20211008123042161

已成功挂载上

image-20211008145334515

加上自启动脚本,重启后也能自动挂载上

八:共享目录

image-20211008145525346

这里添加个共享,为了方便映射成网络磁盘

九:SMB网络磁盘

image-20211008145206367

映射了一个onedrive和一个aliyun的网络磁盘

image-20211008145246352

还能直接在多平台同步编辑文件

十:总结

现在过程主要是三样东西,ClientID,Secert,Token

前两样在微软获得,Token要在支持跳转的浏览器环境在授权获取,现在唯一不确定的

现在已知道 的是API 授权有效期是24个月,但不清楚Token和有效期是多久,如果时间较短,那整个折腾意义就不大了!希望Token能长久有效吧,这样就能完美了,即满足了网盘需求,又满足了office 365套件!

openwet使用Rclone同步阿里云网盘并开机自动挂载

一:挂载

我自己的挂载命令

rclone mount AliyunWebdav: /opt/AliyunWebdav --allow-other --allow-non-empty --vfs-cache-mode writes &

挂载阿里云webdav到本地

image-20210922133133527

将AliyunWebdav整个目录挂载到我软件路由/opt/AlinyunWebdav目录下

p3terx参考命令

rclone mount Onedrive:/ /Onedrive --copy-links --allow-other --allow-non-empty --umask 000 --daemon

网盘名称为配置时填的 name网盘路径为网盘里的文件夹,留空为整个网盘,本地路径为 VPS 上的本地文件夹。参数可以查看官方文档根据需求进行选择。实际输入时不要有括号,这里只是为了更清楚的区分。--daemon 为进程守护参数,可后台运行。

二:开机自动挂载

  • 下载并编辑自启脚本
wget -N git.io/rcloned && nano rcloned
  • 修改内容:
NAME="Onedrive" #Rclone配置时填写的name
REMOTE=''  #远程文件夹,网盘里的挂载的一个文件夹,留空为整个网盘
LOCAL='/Onedrive'  #挂载地址,VPS本地挂载目录
  • 设置开机自启
mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
update-rc.d -f rcloned defaults # Debian/Ubuntu
chkconfig rcloned on # CentOS
bash /etc/init.d/rcloned start

看到 [信息] rclone 启动成功 ! 即可。

管理

开始挂载 bash /etc/init.d/rcloned start

停止挂载 bash /etc/init.d/rcloned stop

重新挂载 bash /etc/init.d/rcloned restart

查看日志 tail -f /$HOME/.rclone/rcloned.log

卸载自启挂载

bash /etc/init.d/rcloned stop
update-rc.d -f rcloned remove # Debian/Ubuntu
chkconfig rcloned off # CentOS
rm -f /etc/init.d/rcloned

参考资料

rclone 官方文档

在 Debian/Ubuntu 上使用 rclone 挂载 OneDrive 网盘

三:OpenWrt启动自动挂载

其实openwrt已经有自启动脚本在Luci web页面可以操作

image-20210924123652962

系统——启动项——拉到最后的——本地启动脚本

image-20210924124042205

在exit 0 之前加入需要挂载的命令,就能随系统启动运行

rclone mount AliyunWebdav: /opt/AliyunWebdav --copy-links --allow-other --allow-non-empty --umask 000 --daemon

四:重启测试

提交上面的本地启动脚本后,重启,查看挂载点,测试成功

image-20210924123803215

五:总结

其实openwrt有完整的WEB管理页面,能直接添加启动页,就不需要用到参考资料二:开机自动挂载,可以略过二:开机自动挂载