Onedrive的目录列表程序有很多比较出名的有oneindex,pyone等等,而有时候我们去考虑选择哪一个程序时最在意的应该就是其稳定性了,大部分onedrive目录列表程序都是采用的PHP,对于正常的存储内容来说应该还是够了,但是对于仓鼠党或者是网盘内文件数量和深度过多的话就很容易出现api爆炸的情况,而基于Go语言编写的onelist可以有效的解决这个问题,语言自带的高并发性能能够高效的处理系统的请求。

功能

1、支持国际版、个人免费版(家庭版)、中国版(世纪互联)

2、支持多网盘绑定(要求每个网盘的 SubPath唯一)

3、支持文件夹内文件数量1000以上

4、刻隐藏指定目录或文件,保护私人文件

5、支持目录加密,且支持不同目录不同密码

6、搭载Dplayer,可以在线播放视频

7、可预览图片

8、支持使用VPS/CDN加速

9、支持路径含特殊字符

10、......

安装

Github地址

1、安装OneList

#新建安装目录并进入
mkdir /opt/OneList && cd /opt/OneList

#程序下载
#64位
wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/amd64/linux/OneList
#32位(x86)
wget https://raw.githubusercontent.com/MoeClub/OneList//master/Rewrite/i386/linux/OneList
#arm(如树莓派)
wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/arm/linux/OneList
#授权
chmod +x OneList

2、获取授权认证

首先确保你现在office登录的是你所需要挂载的网盘账号,点击下方授权地址获取授权链接

国际版、个人版请点我 中国版(世纪互联)请点我

授权确认后会出现一个localhost开头的打不开的链接,我们需要的就是它,先复制它,马上要用。

3、生成配置文件

#国际版,将url换成你上面复制的授权地址,包括http://loaclhost。
 ./OneList -a "url" -s "/guoji" 
#个人版(家庭版),将url换成你上面复制的授权地址,包括http://loaclhost。 ./OneList -ms -a "url" -s "/geren" 
#中国版(世纪互联),将url换成你上面复制的授权地址,包括http://loaclhost。 ./OneList -cn -a "url" -s "/cn"
#如果提示错误可以尝试使用bash OneList来替代 ./OneList
#使用案例,假设挂载的是国际版,想要挂载的目录为test,授权URL为 http://localhost/test代码如下
bash OneList -a "http://localhost/test" -s "/test"
#提示success就表示成功了,否则请重新配置

注意事项:

1、确保网盘所在域已经开放api,不知道的可以问商家

2、授权url只能使用一次,失败的话请重新申请

3、命令中的/test参数为网盘地址的后缀,比如你的主机IP为192.168.1.2则网盘挂载地址为http://192.168.1.2:8000/test,可以使用根目录“/”只建议单网盘使用

4、后缀不满意可以之后在配置文件中修改,无需重新配置

本文默认的配置文件为/opt/OneList/config.json,可自行修改

[
  {
    // 如果是家庭版或者个人免费版, 此项应为 true.
    "MSAccount": false,
    // 如果是中国版(世纪互联), 此项应为 true.
    "MainLand": false,
    // 授权令牌
    "RefreshToken": "1234564567890ABCDEF",
    // 单配置文件中,此项要唯一.将此OneDrive中设置为`RootPath`目录映射在`http://127.0.0.1:5288/onedrive` 下.
    // (只推荐一个盘位的时候使用根目录"/".)
    "SubPath": "/onedrive",
    // 读取OneDrive的某个目录作为根目录. (支持根目录"/")
    "RootPath": "/Test",
    // 隐藏OneDrive目录中的文件夹和文件, 条目间使用 "|" 分割. (跳过缓存设置的条目.)
    "HidePath": "/Test/Obj01|/Test/Obj02",
    // 使用用户名和密码加密OneDrive目录. 目录和用户名密码间使用 "?" 分割, 用户名密码使用 ":" 分割, 条目间使用 "|" 分割. 无效条目将跳过.
    "AuthPath": "/Test/Auth01?user01:pwd01|/Test/Auth02?user02:pwd02",
    // 缓存刷新间隔.(所有项目中的刷新时间取最小值为有效刷新间隔)
    "RefreshInterval": 900
  }
]

4、运行

下载主题

onelist默认主题比较丑,这里下载HaorWu的

wget https://raw.githubusercontent.com/MoeClub/OneList/master/Rewrite/%40Theme/HaorWu/index.html -P /opt/OneList
#创建一个screen保持运行
apt install screen  #ubuntu|debian
yum install screen  #centos
screen -R OneList
/opt/OneList/OneList -bind 0.0.0.0 -port 8000 #监听8000端口,可自行修改

挂载之后程序会先缓存目录信息,在此期间访问网页会显示404 not found,等待程序缓存结束之后显示cache done即可。

主流云服务器厂家如aws,azure,阿里云、腾讯云等默认安全组会关闭端口,请自行开放8000端口,使用宝塔也请在安全选项中放行端口,如果想使用域名可以将域名解析到主机上再开启反代即可。

以宝塔为例

1pfC4.png
创建网站
1p4du.png
添加反向代理
1pBrG.png
配置反向代理

5、开机自启

#设置你的运行监听端口,即你可以通过ip:端口访问程序,这里默认8000。
port="8000"
#将以下代码一起复制到SSH运行
cat > /etc/systemd/system/onelist.service <<EOF
[Unit]
Description=onelist
After=network.target

[Service]
Type=simple
ExecStart=/opt/OneList/OneList -bind 0.0.0.0 -port ${port}
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
#启动并设置开机自启
systemctl start onelist
systemctl enable onelist

6、更多主题

https://github.com/MoeClub/OneList/tree/master/Rewrite/@Theme

想要用哪个自己去下载替换即可

7、其他命令

启动:systemctl start onelist
停止:systemctl stop onelist
重启:systemctl restart onelist
查看状态:systemctl status onelist

8、卸载

#未设置开机自启
rm -rf /opt/OneList

#设置过开机自启
systemctl stop onelist
systemctl disable onelist
rm -rf /opt/OneList /etc/systemd/system/onelist.service

感谢萌咖大佬的程序,感谢moerats的教程