Giter VIP home page Giter VIP logo

sosf's Introduction

简介

Serverless OneDrive & SharePoint Function.

或许是国内访问最快的 OneDrive 免服务器图床程序(或视频床、音乐床、...床),专为世纪互联用户打造

注:SharePoint 文档储存功能和 OneDrive 网盘类似,本说明将他们统称为 OneDrive。

演示

SOSF 的前端 DEMO 页面:sosf.vercel.app

SOSF

特点

  • 使用 sstore 项目缓存 access_token,省去复杂的数据库配置和不必要带宽开销

  • 与现有免费图床服务的区别:我们有 OneDrive 😎,所以 sosf 可以托管任何文件(图片、视频、下载链接),并且无储存空间限制(几乎,你甚至还可以用 SharePoint 扩展空间)

  • 提供 API 接口模块 sor,良好的 DTS 支持,方便二次开发。 例如:

    一个列出 OneDrive 根目录所有文件的示例

    const { getToken, listChildren } = require('@beetcb/sor')
    
    async function handler() {
      const access_token = await getToken()
      const resource = await listChildren('/', access_token)
      if (resource) {
        return resource
      }
    }
    
    exports.main = handler
  • 访问速度快:sosf 使用国内 Serverless 供应商提供的免费服务(一般带有 CDN),访问国内的世纪互联,速度自然有质的飞跃

  • CLI 配置,简单快速:微软 Graph 的授权过程比较麻烦,为此我提供了一个 CLI 工具来加快部署。用户填入所有的配置项后,该工具自动写入配置文件,无需多余操作

  • 设计从简:sosf 只验证并获取 Onedrive 文件直链,并重定向过去(为方便文件查找,前端提供了简单的文件查找列表界面,让你简单高效地查找文件并复制文件链接)

  • 多平台部署支持:腾讯云开发 、Vercel
    • 腾讯云开发免费额度 (⚡):就速度而言它应该是最快的,缺点是每月有使用量限制 执行内存(GB) * 执行时间(s) 为 1000 GBs,云函数公网访问月流量限制为 1 GB,详见 免费额度。如果你觉得服务不错,也可按量付费表示支持

    • Vercel Serverless Func (🌸):它是国外服务器,速度不如前两家;不过国内访问速度也不错,不需要备案,免费额度也绝对够用:云函数使用量限制 执行内存(GB) * 执行时间(h) 为 100 GB-Hrs,月流量 100 GB, 详见 Fair Use Policy

  • 遵守合理使用规范:在我们使用这些云服务商表示支持的同时,也要优雅薅羊毛合理使用

部署指南

OneDrive 配置并授权

  1. Azure 控制台顶栏搜索应用注册⇢ 新注册 ⇢ 受支持的账户类型填入任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户⇢ 重定向 uri 填入 http://localhost⇢ 获取 应用程序(客户端) ID (client_id)

  2. 授权

  • OneDrive 用户左管理栏 API 权限 ⇢ 添加权限 offine-accessfiles.read.allfiles.read.write.all⇢ 左管理栏证书和密码 ⇢ 创建并获取 客户端密码 client-secret

  • SharePoint 用户左管理栏 API 权限 ⇢ 添加权限 offine-accesssites.read.allsites.read.write.all⇢ 左管理栏证书和密码 ⇢ 创建并获取 客户端密码 (client-secret) ⇢ 创建并获取 client-secret 和以下两项额外参数:

    • hostName: 你的 SharePoint Host,比如 cos.sharepoint.cn
    • sitePath: 你的 SharePoint 网站相对位置,比如 /sites/cos

    比如我的 SharePoint 访问网址为 https://odbeet.sharepoint.cn/sites/beet,则 hostName 值为 odbeet.sharepoint.cnsitePath 值为 /sites/beet,这是最快判断上述两者取值的方法

  1. 得到上述配置参数后,请保存好留作后用

云平台配置并部署

请在以下三种平台中根据你的需求任选其一:

一. 腾讯云开发 tcb

未开通云开发&新注册用户需要先开通云开发,具体过程为:在 此地址 注册登录,完成后再进入 开通地址 开通 ⇢ 不创建环境(请勾选),其它默认 ⇢ 跳转到授权界面并授权,开通成功 0. 点击此按钮一键部署:

  • 使用免费资源(记得勾选)

注意:直接部署计费模式为按量计费 + 免费额度,如果你需要使用包月类型的免费额度,请参考手动部署教程:

点击展开手动部署教程

  1. 配置机密环境变量:

    git clone https://github.com/beetcb/sosf.git
    npm i
    npm run auth
    # 在此根据提示开始配置

    配置完成后,该工具会创建一个 .env 文件,内容大致如下:

    client_id = xxx
    client_secret = xxx
    redirect_uri = http://localhost
    auth_endpoint = https://login.partner.microsoftonline.cn/common/oauth2/v2.0
    refresh_token = 0.AAAAQnNGiYmnI0CvMoN0bxMYyyzk3YwiZepNl9MOI6F2AGAB
    drive_api = https://microsoftgraph.chinacloudapi.cn/v1.0/sites/xx.sharepoint.cn,b4df3221/drive
    

    你可以在此增加配置项,详见 部署配置

  2. 进入云开发控制台 ⇢ 空模板 ⇢ 确保选择计费方式包年包月, 套餐版本免费版(这样能够确保免费额度超出后不继续扣费,当然如果你觉得服务不错,请付费表示支持) ⇢ 进入控制台

  3. 安装 tcb cli 并授权登录:

    npm i -g @cloudbase/cli
    tcb login

    此时需手动修改云开发配置文件中 envId 项为你的环境 ID

  4. 部署云函数:

    tcb fn deploy
  5. 指定 HTTP 访问路径:

    tcb service create -p / -f sosf
    # 让函数在根目录触发
  6. 等待几分钟,就可以开始预览了,访问示例:https://your.app/path/to/file.md

  1. 本地获取机密环境变量:

    git clone https://github.com/beetcb/sosf.git
    npm i
    npm run auth
    # 在此根据提示开始配置

    配置完成后,该工具会创建一个 .env 文件,内容大致如下:

    client_id = xxx
    client_secret = xxx
    redirect_uri = http://localhost
    auth_endpoint = https://login.partner.microsoftonline.cn/common/oauth2/v2.0
    refresh_token = 0.AAAAQnNGiYmnI0CvMoN0bxMYyyzk3YwiZepNl9MOI6F2AGAB
    drive_api = https://microsoftgraph.chinacloudapi.cn/v1.0/sites/xx.sharepoint.cn,b4df3221/drive
    

    你可以在此增加配置项,详见 部署配置

  2. 进入刚刚创建的环境 ⇢ 左栏云函数 ⇢ 在线代码编辑器 ⇢ 将本地 .env 文件里的内容粘贴到在线编辑的 .env 文件中并保存,然后点击测试,无报错则配置成功

  3. 到此,应该部署成功了,如需自定义域名,请配置 HTTP 访问服务。访问示例:https://domain.com/path/to/file.md

  4. (可选)配置 GitHub 持续部署,更新功能更便捷:fork 本项目,在 Actions 栏下开启 sosf ,下一步需要配置部署机密,在 Settings -> Secrets -> 依次添加以下四个 Secrets:

    DOTENV   之前生成的 .env 文件的内容
    ENVID    云开发 ENVID
    SECRETID 腾讯云的访问密钥 ID
    SECRETKEY   腾讯云的访问密钥 KEY
    

    github-actions

    然后请通过 [push] 来测试,成功以后每次的 [push] 操作都会部署 sosf 到你的云开发环境

二. Vercel Serverless Func

  1. 本地获取机密环境变量:

    git clone https://github.com/beetcb/sosf.git
    npm i
    npm run auth
    # 在此根据提示开始配置

    配置完成后,该工具会创建一个 .env 文件,内容大致如下:

    client_id = xxx
    client_secret = xxx
    redirect_uri = http://localhost
    auth_endpoint = https://login.partner.microsoftonline.cn/common/oauth2/v2.0
    refresh_token = 0.AAAAQnNGiYmnI0CvMoN0bxMYyyzk3YwiZepNl9MOI6F2AGAB
    drive_api = https://microsoftgraph.chinacloudapi.cn/v1.0/sites/xx.sharepoint.cn,b4df3221/drive
    

    你可以在此增加配置项,详见 部署配置

  2. 安装 vercel cli 并登录:

    npm i -g vercel
    vercel login
  3. 部署:

    vercel --prod

    到此部署完成,访问地址可以在命令行或 vercel 官网看到。需要使用自定义域名,请参考 custom-domains

  4. 访问地址示例:https://your.app/?path=/path/to/file.md

  5. (可选)配置 Vercel 持续部署,更新功能更便捷:fork 本项目,在 Vercel 导入新的 GitHub 项目:

    vercel-import

    ROOT DIRECTORYplatforms/vercel/sosf,Environmental Variables 填入之前生成的 .env 中的键值对 (也就是说你需要手动添加多次,目前还没有找到好的解决方案,欢迎开 Issue 讨论解法)

    vercel-import-success

部署配置

你可以直接使用 .env 文件自定义配置如下内容:

base_dir = 需要部署的根目录文件夹,默认为 /
access_key = 前端界面鉴权密钥,持有此密钥才能访问文件夹内容,默认为空

使用 access_key 访问前端列表的方法:https://static.beetcb.com?key={{access_key}}

作者

作者:beetcb

邮箱: [email protected]

sosf - Licensed under under MIT

鸣谢

sosf's People

Contributors

beetcb avatar renovate-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

sosf's Issues

Sometimes sosf encounters a weird fetch error : incorrect header check

FetchError: Invalid response body while trying to fetch https://microsoftgraph.chinacloudapi.cn/v1.0/sites/odbeet.sharepoint.cn,b4df3221-b95e-4697-9f57-3572e2de6c5d,d5f9f050-54e0-44e2-8370-5437d0637fe6/drive/root:/postimg/23/showMeTheCode.jpg: incorrect header check
    at Gunzip.<anonymous> (/var/user/node_modules/node-fetch/lib/index.js:399:12)

My problem ? ( or maybe microsoft is to blame ? ) 🦁

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.