教程:使用OneIndex直接列OneDrive目录/文件直链下载

2018年4月20日 35 条评论 2.91k 次阅读 3 人点赞

文章大部分内容转自:https://github.com/donwa/oneindex

本文加入一些安装命令,方便新手使用

 

我的自建OneIndex:https://softs.sabia.me
Oneindex一键脚本:https://www.sabia.cc/bash-aria2-oneindex-onedrive-20180824.html

功能:

不用服务器空间,不走服务器流量,

直接列OneDrive目录,文件直链下载。

demo

https://xn.tn

change log:

18-03-29: 更新直链获取机制、缓存机制,避免频繁访问的token失效
18-03-29: 解决非英文编码问题
18-03-29: 添加onedrive共享的起始目录 功能
18-03-29: 添加rewrite的配置文件
18-03-29: 增加sqlite模式cache支持
18-03-29: 添加缩略图功能
18-03-29: 添加404判断
18-03-31: 添加console
18-04-13: 修复特殊文件名无法下载问题
18-04-13: 添加命令行上传功能
18-04-16: 更新 2.0 beta
18-04-16: 更新展示界面
18-04-16: 响应式,支持小屏设备
18-04-16: 图片在线预览
18-04-16: 视频在线播放
18-04-16: 代码在线查看(js、css、html、sh、php、java、md等)
18-04-16: README.md 支持,解析各目录下(onedirive目录下) README.md 文件,在页面尾部展示。
18-04-18: 音频在线播放
18-04-18: HEAD.md 支持,在页面头部展示
18-04-18: .password 文件夹加密

需求:

1、PHP空间,PHP 5.6+ 打开curl支持,推荐使用Apache

2、onedrive business 账号 (企业版或教育版/工作或学校帐户)

3、oneindex 程序

安装:

以下在网站根目录执行

git clone -b master https://github.com/donwa/oneindex.git tmp && mv tmp/.git . && rm -rf tmp && git reset --hard

chmod -R 755 config/

chmod -R 755 config/base.php

chmod -R 755 cache/

chown -R www:www *

1、复制oneindex到服务器,设置config/config/base.php 、 cache/ 可读写
2、浏览器访问、绑定账号
3、可以使用

计划任务

[可选]推荐配置,非必需。后台定时刷新缓存,可增加前台访问的速度

# 每小时刷新一次token
0 * * * * /具体路径/php /程序具体路径/one.php token:refresh

# 每十分钟后台刷新一遍缓存
*/10 * * * * /具体路径/php /程序具体路径/one.php cache:refresh

特殊文件实现功能

README.mdHEAD.md 、 .password特殊文件使用

可以参考https://github.com/donwa/oneindex/tree/files

在文件夹底部添加说明:

在onedrive的文件夹中添加README.md文件,使用markdown语法。

在文件夹头部添加说明:

在onedrive的文件夹中添加HEAD.md 文件,使用markdown语法。

加密文件夹:

在onedrive的文件夹中添加.password文件,填入密码,密码不能为空。

命令行功能

仅能在php cli模式下运行
清除缓存:

php one.php cache:clear

刷新缓存:

php one.php cache:refresh

刷新令牌:

php one.php token:refresh

上传文件:

php one.php upload:file 本地文件 [onedrive文件]

例如:

//上传demo.zip 到onedrive 根目录  
php one.php upload:file demo.zip  

//上传demo.zip 到onedrive /test/目录  
php one.php upload:file demo.zip /test/  

//上传demo.zip 到onedrive /test/目录并命名为 d.zip
php one.php upload:file demo.zip /test/d.zip  

可配置项

配置在 config/base.php 文件中:

onedrive共享的起始目录:

'onedrive_root'=> '', //默认为根目录

如果想只共享onedrive下的 /document/share/ 目录

'onedrive_root'=> '/document/share', //最后不带 '/'

去掉链接中的 /?/ :
需要添加apache/nginx/iis的rewrite的配置文件
参考程序根目录下的:.htaccessnginx.confWeb.config

  //在config/base.php 中
  'root_path' => '?' 

改为

    'root_path' => '' 

nginx图片404问题,参考https://github.com/donwa/oneindex/issues/14

 

设置nginx伪静态

location / {
    if (!-f $request_filename){ 
        rewrite (.*) /index.php; 
    } 
} 

 

缓存时间:   初步测试直链过期时间为一小时,默认设置为:

  'cache_expire_time' => 3600, //缓存过期时间 /秒
  'cache_refresh_time' => 600, //缓存刷新时间 /秒

如果经常出现链接失效,可尝试缩短缓存时间,如:

  'cache_expire_time' => 300, //缓存过期时间 /秒
  'cache_refresh_time' => 60, //缓存刷新时间 /秒

设置缓存模式为sqlite:

'cache_type'=> 'sqlite'  // file | sqlite

Q&A:

Q:需要企业版或教育版的全局管理员?
A:不需要,全局管理员开出来的子账号就可以,不过该域名在office365必须要有管理员

Q:文件上传后,不能即时在程序页面显示出来?
A:有缓存,可以在config/base.php设置缓存时间。

Q:能否使用自己的client_id、client_secret?
A: 1、按照 https://moeclub.org/2017/03/17/24/ 教程获得 client_id、client_secret
2、修改 config/base.php 中的client_id、client_secret、redirect_uri(回调url)的值,获取code
3、访问 http://你的域名/?/install&code=你的code 完成账号绑定

Q:回调地址的功能和代码是什么?会不会影响程序使用
A:由于client_id、client_secret和callback_url是绑定的,为了实现一键绑定,添加了/onedrive-login作为中转
其功能仅为跳转回安装目录,代码如下:

<?php 
if(!empty($_GET['state'])){
  header('Location: '.$_GET['state'].'&code='.$_GET['code']);
}

可自行使用 .com .org .tn 的域名进行部署。

感谢 moeclub 提供的 client_id 和 client_secret,以实现一键绑定

Joker

这个人太懒什么东西都没留下

文章评论(35)

  • jak

    git clone -b master
    这一行的网址错了

    2018年4月25日
    • Joker

      @jak 已修正,谢谢提醒!

      2018年4月25日
  • Chasing

    大佬求出一个详细点的小白教程啊,有些不是很明白的地方 :lol:

    2018年6月1日
    • Joker

      @Chasing 这教程够小白了呀,你按照步骤一步步来就行了

      2018年6月1日
  • ye

    就是上传到服务器,指的是vps吗,还有centos7支持吗

    2018年6月4日
    • Joker

      @ye 是的,支持centos7

      2018年6月4日
      • ye

        @Joker 还有个问题 在网站根目录执行搞不懂

        2018年6月4日
        • Joker

          @ye 网站根目录就是你建站的目录啊

          2018年6月4日
          • ye

            @Joker hhh,感觉脑壳炸裂,第一步就不行,希望大佬能出一个录屏 :biggrin:

            2018年6月4日
          • Joker

            @ye 我抽空把。。。。因为实在太简单的东西。

            2018年6月4日
  • ddd

    就是打开网址指的是自己的ip地址吗

    2018年6月6日
  • 缙哥哥

    简直是神器!

    2018年6月21日
  • 小学徒

    大佬 怎么给链接加密哦

    2018年7月3日
    • Joker

      @小学徒 很简单啊,建立个.password文件,把密码输入进去文件就行了。

      2018年7月3日
  • 123

    提示程序安装失败怎么回事

    2018年7月9日
    • Joker

      @123 请说明具体情况

      2018年7月9日
  • xue

    大佬有两个问题
    1、我绑定的二级目录
    ***.cn/pan
    解析好了,pan.**.cn 可是进目录还是要显示/pan 这个怎么办呢
    2、上面的Oneindex怎么修改啊
    Sabia资源站 就是你的网站这样。。

    2018年7月14日
    • Joker

      @xue 配置在 config/base.php 文件中,你看着改就行了啊

      2018年7月14日
      • xue

        @Joker :lol:
        只看到一个/?/的啊…

        2018年7月14日
  • diadia

    下载下来为什么没有base.php

    2018年7月15日
  • PPTPPP

    你好 为什么你搭的 oneindex 视频 下载地址是https://softs.sabia.me/%E5%BD%B1%E8%A7%86/%E6%B0%B8%E6%97%A0%E6%AD%A2%E5%A2%83%20%E6%AD%A 这样的 而我的是直接输出下载地址为 https:/xxx.cf/?/963852/xxxx.mp4 这样的 要怎样才能显示类似你那样的下载地址呢
    ???

    2018年8月25日
    • Joker

      @PPTPPP 请设置伪静态

      2018年8月25日
      • PPTPPP

        @Joker 能请教下怎么操作吗?是在nginx.conf文件里 添加
        location / {
        if (!-f $request_filename){
        rewrite (.*) /index.php;
        }
        }

        我添加了这个打不开,我是小白 谢谢你。

        2018年8月26日
        • Joker

          @PPTPPP 你如果是nginx,就修改nginx的conf目录下的 网站.conf

          2018年8月28日
  • Jacob

    博主,有些文件不会自动上传怎么办?手动上传也没用

    2018年8月30日
    • Joker

      @Jacob 你是用的什么方式上传?

      2018年8月30日
  • 佐风

    说实话 那些代码真看不懂跟别的程序安装有点不一样感觉

    2018年9月6日
  • 刀下的小猪

    大佬问下,我把程序放在二级目录,做好都能用,就是不能点图,一点图片就显示Forbidden
    You don't have permission to access /oneindex/壁纸/三体智子.jpeg on this server.。你看这是什么问题

    2018年9月7日
    • Joker

      @刀下的小猪 你有没有试过一级目录呢?

      2018年9月7日
      • 刀下的小猪

        @Joker 一级目录肯定行,但是我把一级目录做成了blog,然后在web目录下建了一个二级目录来输出,其他都能用,就图片不能看,而且只有电脑端不行,手机端可以,也不知道哪里出了问题。。。

        2018年9月7日
        • Joker

          @刀下的小猪 你弄个二级域名不就行了~

          2018年9月7日
  • 刀下的小猪

    行了。感谢

    2018年9月7日
  • 林子

    大佬我配置如下
    BWG的VPS
    搭载
    Aria2
    AriaNg
    Oneindex
    域名直接是 ip 域名下的 one 和 ng 文件
    就差 upload2one.sh 搞的我晕晕的 这个怎么弄呀,

    #!/bin/bash
    path=$3
    downloadpath='/Download'
    if [ $2 -eq 0 ]
    then
    exit 0
    fi
    while true; do #提取下载文件根路径,如把/root/downloads/a/b/c/d.jpg变成/root/downloads/a
    filepath=$path
    path=${path%/*};
    if [ "$path" = "$downloadpath" ] && [ $2 -eq 1 ] #如果下载的是单个文件
    then
    /www/server/php/70/bin/php /www/wwwroot/45.78.79.192/one/one.php upload:file "$filepath" /upload/
    rm -rf "$filepath"
    exit 0
    elif [ "$path" = "$downloadpath" ] #文件夹
    then
    /www/server/php/70/bin/php /www/wwwroot/45.78.79.192/one/one.php upload:folder "$filepath"/ /upload/"${filepath##*/}"/
    rm -rf "$filepath"/
    exit 0
    fi
    done

    另外Aria2.conf如下
    # 文件的保存路径(可使用绝对路径或相对路径), 默认: 当前启动位置
    dir=/Download
    on-download-complete=/root/upload2one.sh
    最后 chmod +x /root/upload2one.sh
    没法上传。。。

    2018年9月7日
  • 佐风

    全部搭建好了 我只要把文件上传到onedrive就行了嘛 网站就是自己列出来?

    2018年9月14日
    • Joker

      @佐风 bingo!

      2018年9月14日