CFWorker-ODIndex中文文档&使用教程

写在最前面
自从这篇博文发布后,OneIndex迎来了一次重大更新,去除了FireBase依赖,转用KV存储刷新令牌。本片教程已过时,具体会在春节前后更新最新版本。

OneDrive,相信大家都不陌生,微软家的网盘,虽说有类似于OneManager一样的目录列表程序,但是直连海外总是会遭受严重的丢包,得到极其糟糕的体验。这时候CLoudFlare作为不那么好使的CDN就排上用场了,项目onedrive-cf-index 解决了这个问题,但是据我观察,这个仓库作者应该是个中国人,但是readme文档可不是中文,这对一些使用者造成了一定的困扰,而且文档相当言简意赅,这一篇文章相当于文档的中文翻译和使用教程.

使用前言
部署此项目较为麻烦,请确保你满足以下俩个及以上想法后,才继续往下读:

  1. 我非常需要搭建于CloudFlare的OneDrive目录列表吗?
  2. 我非常需要这个版本的目录列表吗?
  3. 我有这个耐心吗?
    如果没有,那么我们建议你可以使用另一个功能和UI稍差的cf目录列表OneDrive-Index-Cloudflare-Worker 这个版本有不是很详尽的中文文档,并且较为简单,或者试试一步生成的GDIndex,可以参考我之前写的GDIndex部署参考

简介

新功能

  • 新设计: spencer.css。
  • 根据文件类型呈现的文件图标。
  • 使用“Font Awesome icons” 图标代替材料设计图标(以获得更好的设计一致性)。
  • 使用github-markdown-css进行README.md渲染
  • 添加Cookie以更好地进行目录导航。
  • 支持文件预览:
  • 图片:.png,.jpg,.gif
  • 纯文本:.txt
  • 文档:.md,.mdown,.markdown
  • 代码:.js,.py,.c,.json。
  • PDF:延迟加载,加载进度和内置的PDF查看器
  • 音乐/音频: .mp3,.aac,.wav,.oga
  • 视频: .mp4,.flv,.webm,.m3u8

  • 代码语法以GitHub样式突出显示。(使用PrismJS。)
  • 图像预览支持中型缩放效果。
  • 使用Google Firebase实时数据库缓存和刷新令牌。(对于那些负担不起Cloudflare Workers KV存储的人。 😢)
  • 在Turbolinks®的帮助下进行延迟加载。(从folder转到时有些问题file preview,但不会降低用户体验。)

在这表面下:

  • 一直以来都是CSS动画。
  • 使用wrangler和webpack打包源代码。
  • 转换所有CDN以使用jsDelivr加载。
  • 没有外部JS脚本,所有脚本都已通过webpack加载!(除了某些库。)


所有其他功能

请参阅:新功能| OneDrive-Index-Cloudflare-Worker

开始

导入此项目

请注意!
请不要Fork此项目,
在这个过程中你将会获取到数串token,fork的仓库无法转为私有仓库,这将会对你的数据造成威胁.

点击右上角的 + 号选择Import项目

原先仓库地址填写https://github.com/spencerwooo/onedrive-cf-index,新仓库名称随意,仓库类型必须改为Private私人,最后导入

导入成功,进入repo:

获取Token

进入https://heymind.github.io/tools/microsoft-graph-api-auth 开始准备你所需要的东西:

进入https://portal.azure.com/#blade/Microsoft_AAD_RegisteredApps/ApplicationsListBlade,注册一个新app【使用微软账号】

几番跳转后,来到这样的界面:

注意,我们强烈建议用英文界面,中文界面可能存在翻译错误产生误导

点击OneIndex,进入应用详情

点击 Redirect URIs 修改跳转链接:

将此处改为 https://heymind.github.io/tools/microsoft-graph-api-auth

设置API:

至少选择 offline_access, Files.Read, Files.Read.All .

返回,获取 Application (client) ID

在这里填上复制的client id,并点击AUTHORIZE验证

你会发现跳转一段时间后又回到了拉取界面,不过多了一个提示框,上面写着已经获取到Code

接着我们获取Secrets,点击 Certificates & secrets,进入该选项卡:

新增一个:

名字随意,期限为永久:

复制生成的密钥,请注意此处密钥仅出现一次,以后就不会再出现了

将获得密钥粘贴进第五步:

点击GetToken,将跳转至如下界面:

此处若失败,请重试第四步

将获得字段的refresh_token写入,重新制得token:

取得token:

妥善保管,接下来我们会用到。

OneDriveToken完毕,接下来进入FireBase教程:

作为数据库存储,原本采用的是cloudFlareKV存储,但考虑到大部分用户没有这个钱去买KV,于是采用了第三方存储。

进入https://firebase.google.com/

开始创建项目:

项目名字随意,下一步

一直下一步,稍后将进入管理界面

选择Database,将其设置为发布模式,禁用写入权限,在数据一栏中添加key,名字为value,值为 https://项目名.firebaseio.com/auth.json ,如我的:
https://oneindex-chenyfan.firebaseio.com/auth.json

点击右上角的小齿轮-项目设置-服务账号-旧版凭据-数据库账号-显示密钥,复制密钥。

FireBase教学完毕。

配置CloudFlare

登录你的CloudFlare,点击右上角,账户设置:

选择API令牌选项卡,生成新的API:

选择自定义令牌:

配置至少如下,可以选择增加

点击获取API令牌

接着还要获取账户ID和区域ID

进入任意一域名,右侧拦里头会有俩ID,复制:

到这里,你获取了以下所有密钥:

  • Azure-refresh_token
  • Azure-client_id
  • Azure-client_secret
  • GoogleFireBase-firebase_url
  • GoogleFireBase-firebase_token
  • CloudFlare-APIToken
  • CloudFlare-ZoneID
  • CloudFlare-AccountID

八个Token,切勿丢失 累死我了

配置OneDrive

用微软账户登录OneDrive,新建文件夹,名字为“Public”

本地wrangler部署

由于此篇教程具体将GithubAction实现无服务器部署,本块内容一笔带过,请直接看到GithubAction部署一块

本地安装依赖环境

yarn global add @cloudflare/wrangler
yarn install

用wrangler登录CloudFlare

wrangler config

wrangler.toml 修改

name: The draft worker's name, your worker will be published at <name>.<worker_subdomain>.workers.dev.
account_id: Your Cloudflare Account ID.
zone_id: Your Cloudflare Zone ID.

src/config/default.js 修改:

client_id: Your client_id from above.
base: Your base path from above.
firebase_url: Your firebase_url from above.

添加环境变量:

wrangler secret put REFRESH_TOKEN
wrangler secret put CLIENT_SECRET
wrangler secret put FIREBASE_TOKEN

部署命令:

wrangler publish

GithubAction部署

GithubAction部署

进入你导入的仓库,点击 wrangler.toml

  • name ==> 默认生成为<#name>.<#User>.workers.dev,随意
  • account_id ==> CloudFlare-AccountID
  • zone_id ==> CloudFlare-ZoneID

进入/src/config/default.js

修改样式

src/render/htmlWrapper.js : 修改标题

src/folderView.js : 修改介绍

设置密钥

密钥名:CF_API_TOKEN

内容: ==> CloudFlare-APIToken

激活Action:

设置CloudFlare变量

进入新创建的Worker:

  • CLIENT_SECRET ==> Azure-client_secret
  • FIREBASE_TOKEN ==> GoogleFireBase-firebase_token
  • REFRESH_TOKEN ==> Azure-refresh_token

部署,发布,绑定域名【可选】:

成品:

Demo:https://onedrive.cyfan.top

后言

其实默认才5GB,还不如GoogleDrive香,但是据说白嫖E5开发者还不错。

OK就到这了,还不懂的欢迎评论区,或者去官方github地址发issues。


 目录